import xhr from './xhr'
import { AxiosRequestConfig, AxiosPromise } from '../types/index'
import { processRequestParams } from '../helpers/url'
import { processRequestData } from '../helpers/data'
import { processRequestHeader } from '../helpers/header'

function dispatchRequest(config: AxiosRequestConfig): AxiosPromise {
  console.log(config)
  processRequest(config)
  return xhr(config)
}

// 处理请求中的各种参数
function processRequest(config: AxiosRequestConfig) {
  // 处理config中的params，拼接到url后面
  config.url = processRequestParams(config)
  // 处理config中的headers
  config.headers = processRequestHeader(config.headers, config.data)
  // 处理config中的data
  config.data = processRequestData(config)
}

export default dispatchRequest
